Online collaboration platform providing multiple design application services

ABSTRACT

A network computer system operates to enable multiple user computing devices to utilize any one of multiple design service applications to create and update a workspace file. The network computer system can store the updated workspace file in connection with an account associated with a user of the first user computing device. In a collaborative environment, the network computer system detects changes to an instance of a workspace on the computing devices of a given user in a group of collaborators. The network computer system then propagates the detected changes in real-time (or near real-time) to instances of the workspace file on computing devices of other users in the group of collaborators.

RELATED APPLICATIONS

This application claims benefit of priority to provisional U.S. PatentApplication No. 63/177,226, filed Apr. 20, 2021; the aforementionedpriority application being hereby incorporated by reference in itsentirety for all purposes.

TECHNICAL FIELD

Examples described herein relate to an online collaboration platform,and more specifically, to an online collaboration platform that providesmultiple design application services.

BACKGROUND

Software design tools have many forms and applications. In the realm ofapplication user interfaces, for example, software design tools requiredesigners to blend functional aspects of a program with aesthetics andeven legal requirements, resulting in a collection of pages which formthe user interface of an application. For a given application, designersoften have many objectives and requirements that are difficult to track.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates a network computing system to implement aninteractive graphic application platform, according to one or moreexamples.

FIG. 1B illustrates a network computing system to implement aninteractive graphic application platform for multiple users in acollaborative network platform, according to one or more examples.

FIG. 2A illustrates a method for providing a graphic application designplatform, according to one or more examples.

FIG. 2B illustrates a graphic application design platform for use inonline collaboration, according to one or more examples.

FIG. 2C illustrates a method for generating cursor text in acollaborative medium, according to one or more embodiments.

FIG. 2D illustrates a method for triggering dynamic content usingtriggers embedded in cursor texts, according to one or more embodiments.

FIG. 3A and FIG. 3B illustrate examples of active workspaces which canbe created and updated for a collaborative environment, according to oneor more embodiments.

FIG. 3C illustrates an example of shared content of a collaborativemedium that includes cursor text content, according to one or moreembodiments.

FIG. 4A and FIG. 4B illustrate an example of user computing deviceutilizing multiple design application services to render shared contentin a collaborative environment, according to one or more embodiments.

FIG. 5 illustrates a computer system on which one or more embodimentscan be implemented.

FIG. 6 illustrates a user computing device for use with one or moreexamples, as described.

DETAILED DESCRIPTION

Examples include a computing system that can operate to implement aninteractive collaborative application platform that enables users tocollaborate on graphic design and other types of content creation usingdifferent design application services.

According to examples, a network computer system operates to enablemultiple user computing devices to utilize any one of multiplecollaborative applications where users contribute content to a sharedmedium. In some examples, the network computer system enables multipleuser computing devices to utilize one or more collaborative applicationservices to create and update shared content and resources (e.g., aworkspace file). The network computer system can store the updatedworkspace file in connection with an account associated with a user ofthe first user computing device.

In a collaborative environment, the network computer system detectschanges to an instance of a workspace on the computing devices of agiven user in a group of collaborators. The network computer system thenpropagates the detected changes in real-time (or near real-time) toinstances of the workspace file on computing devices of other users inthe group of collaborators.

In examples, a computing system is configured to implement aninteractive collaborative application platform for utilizing multipleapplication services for creating designs and other types of visualcontent. Examples of application services include (i) a design interfaceapplication to create a design user interface, such as used byuser-interface designers (“UI designers”), web designers, and webdevelopers; and (ii) a whiteboarding application to create a whiteboarddesign.

In some examples, a network computer system is provided to includememory resources store a set of instructions, and one or more processorsare operable to communicate the set of instructions to a plurality ofuser devices. The set of instructions can be communicated to usercomputing devices, in connection with the user computing devices beingoperated to render a corresponding type of collaborative content on acanvas, where the collaborative content can be edited by user input thatis indicative of any one of multiple different input actions. Asdescribed by various examples, the instructions and data communicated tothe computing devices enable the respective computing devices to selectone of multiple application services to access, view and editcollaborative content rendered on a shared canvas or other collaborativemedium. In some examples, the collaborative or shared content cancorrespond to a design interface (or design under edit), whiteboardcontent or other visual content.

As used herein, the term “whiteboard” (or “whiteboarding” or variantsthereof) relates to content that is primarily centered about recreatingdigitally the types of content individuals could manually create in acorresponding physical environment, using a real-world whiteboard orsimilar apparatus (e.g., chalkboard). For example, whiteboard contentcan include tools for creating shapes, text, scribbles, or content thatcan be placed onto a surface of the whiteboard (e.g., sticky note).

Still further, in examples, a network computer system operates tocommunicate instructions to a plurality of user devices. Theinstructions enable each of the plurality of computing devices toparticipate in a collaborative session where shared content is renderedon a collaborative medium, including enabling a user of correspondinguser to utilize a corresponding pointer device to interact with thecollaborative medium. The instructions may be executed on each of theplurality of computing devices to generate shared content that includesa graphic representation of the pointer device used by the respectiveuser. Each user can further modify the graphic representation of thepointer device to include text content specified by that user.

Still further, in some examples, a network computer system enables acollaborative session where individual participants can have theirrespective cursors (or graphic representation of pointer device)modified to include user-specified text content. In some variations, thetext content can be ephemeral, so as to automatically disappear. Invariations, the text content can remain until the user provides input toremove or change the content. Still further, in some variations,individual users can have the text content copied onto a canvas of theshared content. As an addition or variation, the cursor text content caninclude embedded keywords or commands which when detected, causeoperations that affect the collaborative session and/or the sharedcontent of the collaborative session.

One or more embodiments described herein provide that methods,techniques, and actions performed by a computing device are performedprogrammatically, or as a computer-implemented method. Programmatically,as used herein, means through the use of code or computer-executableinstructions. These instructions can be stored in one or more memoryresources of the computing device. A programmatically performed step mayor may not be automatic.

One or more embodiments described herein can be implemented usingprogrammatic modules, engines, or components. A programmatic module,engine, or component can include a program, a sub-routine, a portion ofa program, or a software component or a hardware component capable ofperforming one or more stated tasks or functions. As used herein, amodule or component can exist on a hardware component independently ofother modules or components. Alternatively, a module or component can bea shared element or process of other modules, programs or machines.

Some embodiments described herein can generally require the use ofcomputing devices, including processing and memory resources. Forexample, one or more embodiments described herein may be implemented, inwhole or in part, on computing devices such as servers, desktopcomputers, cellular or smartphones, tablets, wearable electronicdevices, laptop computers, printers, digital picture frames, networkequipment (e.g., routers) and tablet devices. Memory, processing, andnetwork resources may all be used in connection with the establishment,use, or performance of any embodiment described herein (including withthe performance of any method or with the implementation of any system).

Furthermore, one or more embodiments described herein may be implementedthrough the use of instructions that are executable by one or moreprocessors. These instructions may be carried on a computer-readablemedium. Machines shown or described with figures below provide examplesof processing resources and computer-readable mediums on whichinstructions for implementing embodiments of the invention can becarried and/or executed. In particular, the numerous machines shown withembodiments of the invention include processor(s) and various forms ofmemory for holding data and instructions. Examples of computer-readablemediums include permanent memory storage devices, such as hard drives onpersonal computers or servers. Other examples of computer storagemediums include portable storage units, such as CD or DVD units, flashmemory (such as carried on smartphones, multifunctional devices ortablets), and magnetic memory. Computers, terminals, network enableddevices (e.g., mobile devices, such as cell phones) are all examples ofmachines and devices that utilize processors, memory, and instructionsstored on computer-readable mediums. Additionally, embodiments may beimplemented in the form of computer-programs, or a computer usablecarrier medium capable of carrying such a program. SYSTEM DESCRIPTION

FIG. 1A illustrates a network computing system to implement aninteractive application platform on a user computing device, accordingto one or more examples. A network computing system such as describedwith an example of FIG. 1A can be implemented using one or more serverswhich communicate with user computing devices over one or more networks.In examples, the network computing system 150 performs operations toenable an interactive application platform (“IAP 100”) to be implementedon user computing devices 10. In examples, the IAP 100 can beimplemented by the user initiating a session (e.g., user accessing awebsite) to receive programmatic resources of the IAP 100. A browsercomponent executes the programmatic resources to implement the IAP 100,with functionality to receive user input and to render content that isbased on or responsive to user input. As described, the IAP 100 isimplemented to enable the user to create various types of content, suchas interactive graphic designs, art, whiteboard content, program coderenderings, presentations, and/or textual content. As further described,the IAP 100 can include logic (“ASL 116”) for implementing one or moreapplication services, where each application service is implementedthrough the IAP 100 to provide a corresponding set of functionality anduser experience. The IAP 100 also implements the application services toshare some resources, such as the canvas, workspace file or library ofdesign elements. Further, the IAP 100 enables multiple applicationservices to be used during a given online session and/or with respect toa particular application service.

According to examples, a user of computing device 10 operates web-basedapplication 80 to access a network site, where programmatic resourcesare retrieved and executed to implement the IAP 100. The web-basedapplication 80 can execute scripts, code and/or other logic (the“programmatic components”) to implement functionality of the IAP 100. Inexamples, the web-based application 80 can correspond to a commerciallyavailable browser, such as GOOGLE CHROME (developed by GOOGLE, INC.),SAFARI (developed by APPLE, INC.), and INTERNET EXPLORER (developed bythe MICROSOFT CORPORATION). In such examples, the processes of the IAP100 can be implemented as scripts and/or other embedded code whichweb-based application 80 downloads from a network site. For example, theweb-based application 80 can execute code that is embedded within awebpage to implement processes of the IAP 100. The web-based application80 can also execute the scripts to retrieve other scripts andprogrammatic resources (e.g., libraries) from the network site and/orother local or remote locations. By way of example, the web-basedapplication 80 may execute JAVASCRIPT embedded in an HTML resource(e.g., web-page structured in accordance with HTML 5.0 or otherversions, as provided under standards published by W3C or WHATWGconsortiums). In some examples, the rendering engine 120 may utilizegraphics processing unit (GPU) accelerated logic, such as providedthrough WebGL (Web Graphics Library) programs which execute GraphicsLibrary Shader Language (GLSL) programs that execute on GPUs.

The IAP 100 can be implemented as part of a network service, whereweb-based application 80 communicates with one or more remote computers(e.g., server used for a network service) to executes processes of theIAP 100. The web-based application 80 retrieves some or all of theprogrammatic resources for implementing the IAP 100 from a network site.The web-based application 80 may also access various types of data setsin providing the IAP 100. The data sets can correspond to files anddesign libraries (e.g., predesigned design elements), which can bestored remotely (e.g., on a server, in association with an account) orlocally. In examples, the network computer system 150 provides a shareddesign library which the user computing device 10 can use with any ofthe application services provided through the IAP 100. In this way, theuser may initiate a session to implement the IAP 100 for purpose ofcreating or editing the workspace file, as rendered on the canvas 122,in accordance with one of multiple collaborative application services ofthe IAP 100.

In examples, the IAP 100 includes a program interface 102, an inputinterface 118 and a rendering engine 120. The program interface 102 caninclude one or more processes which execute to access and retrieveprogrammatic resources from local and/or remote sources. In animplementation, the program interface 102 can generate, for example, acanvas 122, using programmatic resources which are associated withweb-based application 80 (e.g., HTML 5.0 canvas). As an addition orvariation, the program interface 102 can trigger or otherwise cause thecanvas 122 to be generated using programmatic resources and data sets(e.g., canvas parameters) which are retrieved from local (e.g., memory)or remote sources (e.g., from network service).

The program interface 102 may also retrieve programmatic resources thatinclude an application framework for use with canvas 122. Theapplication framework can include data sets which define or configure,for example, a set of interactive graphic tools that integrate with thecanvas 122 and which comprise the input interface 118, to enable theuser to provide input to generate or update content rendered on thecanvas 122.

According to some examples, the input interface 118 can be implementedas a functional layer that is integrated with the canvas 122 to detectand interpret user input. The input interface 118 can, for example,process a user's interaction with an input mechanism (e.g., pointerdevice, keyboard) of the user computing device, to detect, for example,cursor positioning/movement with respect to the canvas 122, hover input(e.g., pre-selection input), selection input (e.g., clicks or doubleclicks), shortcuts (e.g., key board inputs) and other inputs. Inprocessing a user's interaction with a pointer device, the inputinterface 118 can use a reference of the canvas 122 to identify a screenlocation of a user's cursor as the user moves or otherwise interactswith the pointer device. Additionally, the input interface 118 caninterpret an input action of the user based on the location of thedetected input (e.g., whether the position of the input indicatesselection of a tool, an object rendered on the canvas, or region of thecanvas), the frequency of the detected input in a given time period(e.g., double-click), and/or the start and end position of an input orseries of inputs (e.g., start and end position of a click and drag), aswell as various other input types which the user can specify (e.g.,right-click, screen-tap, etc.) through one or more input devices. Insuch examples, the input interface 118 can interpret, for example, aseries of inputs as a design tool selection (e.g., shape selection basedon location of input), as well as inputs to define attributes (e.g.,dimensions) of a selected shape. In other examples, the input interface118 can interpret a continuous input (corresponding to a continuousmovement of the user's pointer device) as selecting a tool (e.g., shapetoo) and canvas location where an output of the selected tool is toappear.

In some examples, the IAP 100 includes application service logic 116 toenable multiple application services to be utilized during a given usersession, where each application service provides the user with aparticular functionality and/or user experience. As described by someexamples, each application service is implemented by the IAP 100utilizing a corresponding application service logic 116 to configure theinterface component 118, rendering engine 120 and/or other components ofthe IAP 100 to provide the functionality and user experience of thecorresponding application service. In this way, the IAP 100 enables theuser to operate multiple application services during one online session.Further, the different application services can share resources,including programmatic resources of the IAP 100, such as canvas 122. Inthis way, each application service can contribute content to and/orutilize features and content provided with the canvas 122 during a givensession. Still further, the application services can be implemented asalternative modalities of IAP 100, such that the user can toggle betweenmodes, where each mode provides a particular functionality and userexperience. In examples, each application service can utilize a commonworkspace file associated with the user. By default, a computing devicethat opens the workspace file can utilize a default application serviceto access and/or update that workspace file. The user may also switchthe mode of operation of the IAP 100 to utilize a different applicationservice to access, use and/or update the workspace file.

The network computing system 150 can include a site manager 158 tomanage a website where a set of web-resources 155 (e.g., web page) aremade available for the web-based application 80 of user computingdevices 10. The web-resources 155 can include instructions, such asscripts or other logic (“ICAP instructions 157”), which are executableby browsers or web components of user computing devices. The webresources 155 can also include (i) resources that are to be shared asbetween application services, provided to the user computing devices inconnection with the user computing devices utilizing either of theapplication services, and (ii) application specific resources, whichexecute on the user computing devices for a particular one of theavailable application services. The web resources 155 can also include adesign library of design elements that is partially or fully shared asbetween the application services. The library of design elements canenable the user to select predetermined design elements for use on thecanvas 122 in connection with the user utilizing either of theapplication services.

In some variations, once the computing device 10 accesses and downloadsthe web-resources 155, web-based application 80 executes the IAPinstructions 157 to implement functionality as described with examples.For example, the IAP instructions 157 can be executed by web-basedapplication 80 to initiate the program interface 102 on the usercomputing device 10. The initiation of the program interface 102 maycoincide with the establishment of, for example, a web-socket connectionbetween the program interface 102 and a service component 160 of thenetwork computing system 150.

In some examples, the web-resources 155 includes logic which web-basedapplication 80 executes to initiate one or more processes of a programinterface 102, causing the IAP 100 to retrieve additional programmaticresources and data sets for implementing functionality as described byexamples. The web resources 155 can, for example, embed logic (e.g.,JAVASCRIPT code), including GPU accelerated logic, in an HTLM page fordownload by computing devices of users. The program interface 102 can betriggered to retrieve additional programmatic resources and data setsfrom, for example, the network service 152, and/or from local resourcesof the computing device 10, in order to implement each of the multipleapplication services of the IAP 100. For example, some of the componentsof the IAP 100 can be implemented through web-pages that can bedownloaded onto the computing device 10 after authentication isperformed, and/or once the user performs additional actions (e.g.,download one or more pages of the workspace associated with the accountidentifier). Accordingly, in examples as described, the networkcomputing system 150 can communicate the IAP instructions 157 to thecomputing device 10 through a combination of network communications,including through downloading activity of web-based application 80,where the IAP instructions 157 are received and executed by web-basedapplication 80.

The computing device 10 can use web-based application 80 to access awebsite of the network service 152 to download the webpage or webresource. Upon accessing the website, web-based application 80 canautomatically (e.g., through saved credentials) or through manual input,communicate an account identifier to the service component 160. In someexamples, web-based application 80 can also communicate one or moreadditional identifiers that correlate to a user identifier.

Additionally, in some examples, the service component 160 can use theuser or account identifier of the user identifier to retrieve profileinformation 109 from a user profile store 166. As an addition orvariation, profile information 109 for the user can be determined andstored locally on the user's computing device 10.

The service component 160 can also retrieve the files of an activeworkspace (“active workspace files 163”) that are linked to the useraccount or identifier from a file store 164. The profile store 166 canalso identify the workspace that is identified with the account and/oruser, and the file store 164 can store the data sets that comprise theworkspace. The data sets stored with the file store 164 can include, forexample, the pages of a workspace and one or more data structurerepresentations 161 for the design under edit which is renderable fromthe respective active workspace files.

As an addition or variation, each file can be associated with metadatathat identifies the application service that was used to create theparticular file. In some examples, the metadata identifies the defaultapplication service for viewing, utilizing or otherwise updating theapplication service.

Additionally, in examples, the service component 160 provides arepresentation 159 of the workspace associated with the user to theweb-based application 80, where the representation identifies, forexamples, individual files associated with the user and/or user account.The workspace representation 159 can also identify a set of files, whereeach file includes one or multiple pages, and each page includingobjects that are part of a design interface.

On the user device 10, the user can view the workspace representationthrough web-based application 80, and the user can elect to open a fileof the workspace through web-based application 80. In examples, upon theuser electing to open one of the active workspace files 163, web-basedapplication 80 initiates the canvas 122. For example, the IAP 100 caninitiate an HTML 5.0 canvas as a component of web-based application 80,and the rendering engine 120 can access one or more data structuresrepresentations 111 of content rendered on the canvas 122.

The IAP 100 utilizes application service logic 116 to implement multiplemodes of operation, where each mode corresponds to an applicationservice. As described, the application service logic 116 associated witheach service application can include instructions and data forconfiguring the components of IAP 100 to include functionality andfeatures of the corresponding application service. Accordingly, theapplication service logic 116 can, for example, configure theapplication framework and/or input interface 118 to differ in form,functionality and/or configuration as between the alternative modes ofthe IAP 100. Additionally, the type of actions and interactions whichthe user can perform to register input can vary based on the modes ofoperation. Still further, the different modes of operation can includedifferent input or user-interface features for the user to select anduse for inclusion on the canvas 122. By way of example, when the IAP 100is operating in a mode for whiteboarding service application, theprogram interface 102 can provide input features to enable a user toselect a design element that is in the form of a “sticky note,” while inan alternative mode for an interactive graphic design serviceapplication, the “sticky note feature” is not available. However, in thealternative mode, the user may be able to select anyone of numerouspossible shapes or previously designed objects which the user can writetextual messages in for display on the canvas 122.

Additionally, the application service logic 116 can configure theoperation of the rendering engine 120, such that the functionality andbehavior of the rendering engine 120 differs as between differentapplication services. In this way, the rendering engine 120 functions toprovide alternative behaviors for different modes of operation,coinciding with the particular service application that is active. Byway of example, the configuration of the rendering engine 120 can affectthe appearance of the canvas 122, the appearance (e.g., visualattributes) of rendered content elements on the canvas 122, the behavioror representation of user interaction (e.g., whether the user cursor orpointe device is represented on the canvas 122), the type or specificcontent that is rendered, the physic engine that is used by therendering engine to represent dynamic events (e.g., the object beingmoved), what user operations can be performed (e.g., whether selectobjects can be resized), and the like.

Additionally, each of the application services can utilize a sharedlibrary of content elements (e.g., graphic design element), as well ascore functionality that enables design elements to be shared and updatedbetween the different application services that are available throughthe platform. Additionally, the workspace file created and editedthrough use of one application service can be utilized with the otherapplication service. Moreover, the transition between applicationservices can be seamless—for example, the user computing device 10 canopen a workspace file using the first application service (e.g.,interactive graphic design application service for UIX design) thenseamlessly switch to using the second application service (e.g.,whiteboarding application service) with the same file, without closingthe workspace file. In such example, each application service enablesthe user to update the workspace file even while the workspace file isin use by other computing devices (e.g., such as in a collaborativeenvironment). In such examples, the user can mode switch the IAP 100 toswitch which application service is in use, with each applicationservice utilizing the workspace file.

FIG. 1B illustrates a network computing system to provides aninteractive application platform for multiple users in a collaborativeenvironment, according to one or more examples. In an example of FIG.1B, a collaborative network platform is implemented by the networkcomputing system 150, which communicates with multiple user computingdevices 10, 12 over one or more networks (e.g., World Wide Web) toimplement the IAP 100 on each computing device. While FIG. 1Billustrates an example in which two users utilize the collaborativenetwork platform, examples as described allow for the network computingsystem 150 to enable collaboration on design interfaces amongst a largergroup of users.

In an example of FIG. 1B, multiple computing devices 10, 12 initiate acollaborative session, where each computing device 10, 12 implements aversion or instance of the IAP 100. The network computing system 150communicates with each computing device 10, 12 over one or more networks(e.g., World Wide Web) to enable the computing devices to collaborate.In particular, the network computing system 150 implements the IAP 100on individual computing devices 10, 12, and enables each computingdevice 10, 12 to create, update or interact with a shared canvas 122

With respect to FIG. 1B, the user computing devices 10, 12 can beassumed as being operated by users that are associated with a commonaccount, with each user computing device 10, 12 implementing acorresponding IAP 100 to access the same workspace during respectivesessions that overlap in time with one another. Accordingly, each of theuser computing devices 10, 12 may access the same set of activeworkspace files 163 at the same time, with the respective programinterface 102 of the IAP 100 on each user computing device 10, 12operating to establish a corresponding communication channel (e.g., websocket connection) with the service component 160.

The service component 160 can communicate a copy of the active workspacefiles 163 to each user computing device 10, 12, such that the computingdevices 10, 12 render an active workspace file 163 at the same time. Insome examples, an active workspace file 163 can be associated with adefault application service, and each computing device 10, 12 can openthe active workspace file 163 using the associated (or default)application service. Still further, in other variations, pages orportions of the workspace file can be associated with differentapplication services.

Each of the computing devices 10, 12 can maintain a local data structurerepresentation 111 of the content rendered on the canvas 122, which maybe based at least in part on the selected workspace file. The servicecomponent 160 can also maintain a network-side data structurerepresentation 161 which can initially be obtained from the files of theactive workspace 163 and maintained through communication with each ofthe computing devices 10, 12 during a collaborative session. In thisway, the network-side data structure can coincide with the local datastructure representations 111 on each of the computing devices 10, 12.

In some examples, the user of the computing devices 10, 12 can switchthe operational mode of the IAP 100 so as to view and update theworkspace using a non-default application service. Thus, in somevariations, the active workspace file can be updated by the usersutilizing either of the application services.

By way of example, during a collaboration session, users can view andedit a shared workspace file using, for example, either a graphic designapplication service or a whiteboarding application service. The networkcomputer system 150 can detect changes made by users that utilize eitherof the graphic design application service or whiteboarding applicationservice, and the network computer system 150 can propagate detectedchanges on any one of the user computing devices to the other usercomputing devices. Further, individual users that participate in thecollaborative environment can download and open the workspace file usinga default application service (e.g., whiteboarding application service),then switch to the other design application service without closing theworkspace file. Accordingly, in some examples, the IAP 100 isimplemented to provide application services that utilize sharedresources (e.g., workspace, design library). In some examples, a sharedworkspace can include components or segments (such as pages or otherlogically distinct segments of a workspace) that are associated withdifferent application services. Thus, for example, one page (or othersegment) of a workspace file can be associated with a graphic designapplication service by default, while another page may be associatedwith a whiteboarding application service. The default designation of theapplication service can correlate to the mode of operation that the IAP100 utilizes to enable the corresponding user to access the page. Stillfurther, while some examples provide that the IAP 100 can switch modesto enable the user to view and/or edit a page or other segment of aworkspace using a non-default application service, in variations, theIAP can be implemented in a manner that precludes pages or segments ofthe workspace from, depending on implementation, being viewed (e.g.,read access) or updated (e.g., write access) through an applicationservice other than the default application service, while other pages orsegments of the workspace file can be accessed through either of theapplication services. Thus, in some variations, the IAP 100 can beimplemented to restrict portions of a shared resource (e.g., page orsegment of a workspace file) from being accessible through anapplication service other than the default application service. Stillfurther, in other examples, the IAP 100 can be implemented toselectively limit (e.g., based on settings, such as specified by adminuser) the ability of certain users (e.g., users of a particular class orrole) from using an application service other than the defaultapplication service to either view or update a shared resource (e.g.,workspace, library of content elements, etc.) or portion thereof of theshared resource. By way of illustration, in the case of a library ofdesign elements, all users associated with an account my access thelibrary to select content elements from the design library for renderingon a collaborative medium, using either of the application services.However, only users of a specific role (e.g., “graphic design user”) maybe permitted to create a new or updated design element to be stored withthe shared design library. Further, in some variations, the ability ofsuch users to create or update the content element may also beselectively limited to allow for changes which are made through one ofthe application services (e.g., the default application service) but notthe other. In this way, the IAP 100 can configure the manner in whichapplication services are utilized with shared resources, as described inexamples and other variations.

In some examples, the web resources 155 include or provide a givenworkspace file that includes a library of design elements which may bemade available to one or multiple application services. Still further,in examples, the design elements library can be updated by users usingeither of the application services provided through the IAP 100.Moreover, in some variations, changes made by individual users to designelements of the library can be propagated to (i) instances of thelibrary provided to other user computing devices (e.g., such as users ofa collaborative session or users who subsequently access the library),and/or (ii) the content and/or interfaces rendered on the canvas 122 ofother users which participate in different collaborative sessions andutilize the particular design element.

To illustrate the latter variation, a user of a collaborative sessioncan update a design element of the library that is used in connectionwith an active workspace file of a collaborative session. Further, invariations, the user can update the library using either of theapplication services. If the design element is in use on the designinterface that is shared during the collaborative session, the change tothe design element as stored with the design library can beautomatically detected by the network computer system 150, and thechange can be propagated to (i) each instance of the library that isdownloaded to the user computers, (ii) the design element as rendered onthe canvas 122 of the individual users of the collaborative session, and(iii) the design element as rendered on the canvas 122 of other userswho are not participating in the collaborative session.

The network computing system 150 and each computing device 10, 12 thatis participating in the collaborative session can maintain a datarepresentation of the shared content. In some examples, the sharedcontent can reflect content that is generated from, for example, userinteractions, such as cursor elements. Content such as depiction ofcursor elements may be shared for one application service (e.g.,whiteboarding), but not the other application service.

In such examples, when a user operating a computing device moves thecursor, the user's computing device can update the local datarepresentation of the shared content to reflect the change in the user'scursor. Each computing devices 10, 12 can generate change data thatreflects changes to the local data representation 111 maintained on therespective computing device 10, 12, as a result of changes the usermakes to the shared content, where those changes include cursormovements and actions of the user. Each computing device 10, 12 canstream change data to the network computing system 150, which in turnupdates the network's representation 161 of the shared content. Thenetwork computing system 150 can reconcile change data received from thevarious computing devices to update the network's representation of theshared content. The network computing system 150 then streams an updatedrepresentation of the shared content to each of the computing devicesthat participated in the collaborative session.

The network computing system 150 can continuously synchronize the sharedcontent and/or active workspace files 163 on each of the user computingdevices. In particular, changes made by users to shared content and/or aselected active workspace file 163 on one computing device 10, 12 may beimmediately (i) reflected in the respective data structurerepresentation 161 of the workspace file, and (ii) rendered on the otheruser computing device 10, 12. By way of example, the user of computingdevice 10 can make changes to shared content that affects acorresponding respective workspace file. Alternatively, the user of thecomputing device 10 can interact with the shared canvas 122 in a mannerwhere the content is changed, without any change being needed to theworkspace file. For example, the user can generate ephemeral textcontent (e.g., cursor text) that is linked to the cursor element,representing the user's pointer device and interaction with the canvas102. In examples, the local data structure representation 111 is updatedto reflect the update to the workspace file and/or shared content. Fromthe computing device 10, the program interface 102 of the IAP 100 canstream change data 121, reflecting the change of the user input, to theservice component 160. The service component 160 processes the changedata 121 of the user computing device. The service component 160 can usethe change data 121 to make a corresponding change to the network-sidedata structure representation 161. The service component 160 can alsostream remotely-generated change data 171 (which in the exampleprovided, corresponds or reflects change data 121 received from the userdevice 10) to the computing device 12, to cause the corresponding IAP100 to update the workspace file as rendered on the other device. Thecomputing device 12 may also use the remotely generated change data 171to update with the local data structure representation 111 of thatcomputing device 12. The program interface 102 of the computing device12 can receive the update from the network computing system 150, and therendering engine 120 can update the workspace file and the respectivelocal copy of 111 of the computing device 12.

The reverse process can also be implemented to update the data structurerepresentations 161 of the network computing system 150 using changedata 121 communicated from the second computing device 12 (e.g.,corresponding to the user of the second computing device updating theshared content and/or workspace file as rendered on the second computingdevice 12). In turn, the network computing system 150 can streamremotely generated change data 171 (which in the example provided,corresponds or reflects change data 121 received from the user device12) to update the local data structure representation 111 of theworkspace file on the first computing device 10. In this way, theworkspace file of the first computing device 10 can be updated as aresponse to the user of the second computing device 12 providing userinput to change the workspace file.

To facilitate the synchronization of the data structure representations111, 111 on the computing devices 10, 12, the network computing system150 may implement a stream connector to merge the data streams which areexchanged between the first computing device 10 and the networkcomputing system 150, and between the second computing device 12 and thenetwork computing system 150. In some implementations, the streamconnector can be implemented to enable each computing device 10, 12 tomake changes to the network-side data representation 161, without addeddata replication that may otherwise be required to process the streamsfrom each device separately.

Additionally, over time, one or both of the computing devices 10, 12 maybecome out-of-sync with the server-side data representation 161. In suchcases, the respective computing device 10, 12 can redownload the activeworkspace files 163, to restart the its maintenance of the datastructure representation 111 of the workspace file that is rendered andedited on that device.

Methodology

FIG. 2A illustrates a method for providing a graphic application designplatform, according to one or more examples. FIG. 2B illustrates agraphic application design platform for use in online collaboration,according to one or more examples. FIG. 2C illustrates a method forgenerating cursor text in a collaborative medium, according to one ormore embodiments. FIG. 2D illustrates a method for triggering dynamiccontent using triggers embedded in cursor texts, according to one ormore embodiments. In describing examples of FIG. 2A through FIG. 2D,reference is made to elements of FIG. 1A and FIG. 1B for purpose ofillustrating suitable elements or components for performing a step orsub-step being described.

With reference to FIG. 2A, network computing system 150 operates toprovide instructions to a user computing device (210), upon the usercomputing device accessing a network site or resource that is managed bythe network computing system 150. Initially, the user computing device10 can be associated with an account identifier (e.g., such as inresponse to the user or user computing device providing credentials).The user computing device 10 can be provided access to a collection ofworkspace files which are associated with the particular account.Alternatively, the user can create a workspace file to associate withthe account. Each of the workspace files may be accessed by one ormultiple application services provided through the IAP 100. For example,the network computing system 150 can provide a first application servicefor enabling the user to create an interactive graphic design for afunctional user-interface, and a second design application service forenabling the user to create a whiteboard design space.

When a session is initiated in the manner described, the networkcomputing system 150 can provide instructions for implementing the IAP100 on the user computing device 10. When implemented, the IAP 100 canoperate in multiple modes, where each mode coincides with use of one ofthe application services (212). Thus, in some examples, the IAP 100 maybe able to operate in a first mode to utilize the first applicationservice (e.g., integrated graphic design application), and in a secondmode to utilize the second application service (e.g., whiteboardingapplication).

In examples, the user can access and open a workspace file associatedwith the user account. The workspace file can be associated withmetadata that specifies the mode and design application service which isto be used by default to open the workspace file (214). For example, aworkspace file can be provided with metadata that identifies the designservice application (e.g., UI design or whiteboarding) that is to beused by default to open the particular workspace file. The metadataassociated with the workspace file can determine the mode of operationfor the IAP 100.

In variations, the user can toggle between modes to perform a fileactivity on the workspace file (216). The IAP 100 can be implemented toopen a workspace file using a first application service (e.g.,interactive graphic design application service). The rendering engine120 of IAP 100 renders content from the opened workspace file on acorresponding canvas 122, in accordance with configurations andfunctionality provided with the application service logic 116 of thefirst application service. Further, the IAP 100 enables the user toutilize either of the service applications to update and/or interactwith the content of the canvas 122. In some implementations, a workspacefile can be associated initially or by default with one of theapplication services (e.g., whiteboarding application) and the IAP 100can automatically implement the corresponding mode/default applicationservice when the workspace file is opened to enable the user can thenupdate the content and/or the workspace file using the default designapplication service. The user can also switch the operational mode ofthe IAP 100 to utilize the other (non-default) application service, inwhich case the rendering engine 120 utilizes the application servicelogic 116 of the other application service to process user input toupdate the content of the canvas 122 and/or the workspace file. Inexamples, the user can toggle between operational modes of the IAP 100(and therefore between the design application services) when providinginput to change the workspace file. The change between modes of the IAP100 (and the design application service) can be seamless, in that theupdates to the content and/or workspace file can be made while theworkspace file is open and in a rendered state on the computing device10.

Once the workspace file is updated, the updated workspace file can bestored in connection with the associated account of the user (220). Inexamples in which the workspace file is updated through onlinecollaboration, the workspace file can be updated in real-time (or nearreal-time) by each collaborator that edits the workspace file.

With reference to FIG. 2B, multiple collaborators can be linked orotherwise associated with an online session where content is rendered ona shared canvas 122 (230). The shared content can be generated from, forexample, a workspace file (or portion thereof). As an addition orvariation, the shared content can be generated from input that isdetected through user interactions with the canvas 122 and/or renderedcontent elements. In examples, the collaborators can be linked to aparticular session, using a session or account identifier. In an aspect,a workspace file that is to be shared and collaborated on during theonline session can also be linked to the session, such that thecollaborators can operate respective user computing devices to view thecontent on the canvas 122.

The network computing system 150 can operate to provide instructions toa user computing device of each collaborator that accesses a networksite of the network computer system (240). The instructions enable thecomputing device of each collaborator to (i) access one or moreworkspace files which are associated with the account or sessionidentifier of the collaborators, and (ii) implement the IAP 100 toutilize multiple application services.

During an online session, each collaborator can utilize one of theapplication services (via the IAP 100 that is implemented on therespective user computer) to access an instance of a workspace file, torender content based at least in part on the workspace file and/or userinput/interactions and to edit or update the content rendered on thecanvas 122 and/or the workspace file (242). By way of example, when awhiteboarding application is utilized, each collaborator can view inreal-time (or near real-time) design elements which are created by othercollaborators on the shared canvas 122.

In some variations, collaborators can utilize alternative applicationservices to update their respective instance of the workspace file(244). For example, individual users can change the mode of operation ofthe IAP 100 to utilize a different application service, and changes madeby such users can be identified and propagated to the instances of theworkspace files used on the computing devices of the othercollaborators, irrespective of the design application service the othercollaborators may be utilizing.

When any of the collaborators update their instance of the contentand/or workspace file (e.g., provide input to add, change or delete adesign element), the change to the instance is identified (250). Inexamples, the IAP 100 maintains a data representation 111 of the contentrendered on the canvas 122 and/or workspace file. When one of thecollaborators changes their instance of the workspace file, the changein the corresponding data representation is identified and propagated inreal-time to the data representations 111 of the canvas content and/orworkspace file on the computing device of the other collaborators (260).In this way, each collaborator views a synchronized rendering of thecanvas content and/or workspace file in its most current state.

Additionally, the network computer system stores each update to theworkspace file (270). For example, the network computer system 150 canmaintain a data representation of the workspace file which is updatedwhen changes are made by collaborators, and the data representationmaintained by the network computer system 150 can reflect the state ofthe workspace file when, for example, the collaboration session ends.

With reference to FIG. 2C, network computing system 150 enables multipleusers to participate in a collaborative session (280). As described withprior examples, each user of the collaborative session operates acomputing device on which an interactive application platform (“IAP100”) is implemented. In some examples, the IAP 100 is implemented by acorresponding user computing device 10, 12 receiving web-resources 155from the network computing system 150, where the web resources 155include instructions, scripts and other logic (including applicationservice logic 116) which is executable by browsers or web components ofthe respective user computing devices 10, 12.

The network computing system 150 generates shared content that includesgraphic representations of pointer devices used by each participatinguser of the collaborative session (282). For example, the shared contentcan include canvas 122, on which whiteboarding content can be createdand rendered. In this context, each user can operate a pointer devicethat move a cursor element about the canvas 122 (and surroundingregions), to, for example, hover (e.g., provide preselection input),select content objects or perform other interactions. In examples, thecursor element generated for each user forms part of the shared contentof the collaborative session. The network computing system 150 operatesto update the shared content that is rendered on each computing device,such that the shared content of the collaborative session shows cursorelements for each participating user. In examples, the network computingsystem 150 can track the movements of the cursor elements of differentusers in real-time (or near real-time).

Additionally, the IAP 100 enables each user to modify the graphicrepresentation of the user's cursor element to include text content thatis specified by the user (284). For example, the user can operate akeyboard or other input mechanism to modify the cursor element toinclude a textual message for other participants of the collaborativesession (e.g., “Hi everyone, great to be here!”). The cursor element canthen incorporate the message, such that the message moves about thecanvas with the cursor element, responsive to the user's interactionwith the pointer device. In this way, the modified cursor elementprovides an efficient mechanism for individual participants tocommunicate messages that are readily visible to all participantswithout requiring the other participants to look away or otherwise bedistracted from the shared content.

In examples, when the user modifies their cursor element with textcontent, the modification remains for a given interval of time (e.g., 5s) before the cursor element returns to a default state (e.g., line,icon, circle, etc.) (285). Still further, in some variations, the textcontent created by the user can be inserted into the shared contentafter a given time interval and/or in response to a given user input(287). For example, the text content can be inserted onto the sharedcanvas at a location of the user's cursor at the expiration of a giventime interval or when user input (e.g., right-click) is received.

Accordingly, as described with examples of FIG. 2C, a user computingdevice that is participating in a collaborative session can be operatedto enable the user to modify the graphic representation of the user'spointer device (e.g., cursor element) to include text content. Forexample, the user computing device 10, 12 can implement the IAP 100 toenable the user to participate in a collaborative session where there isshared content, and the user's modified cursor element is rendered aspart of the shared content

With reference to FIG. 2D, in response to the user interacting with thecursor element (or providing input that is designated to modify thecursor element), a user computing device 10, 12 processes the user inputto modify the user's cursor element during the collaborative session(290). The user can, for example, operate a keyboard, voice-to-textinterface or other alphanumeric input mechanism to enter text input. Invariations, the user can specify a shortcut action, macro or otherwiseselect a pre-composed message.

The user computing device 10, 12 processes the user input by, in part,rendering text content that is based on the input in association withthe cursor element as part of the shared content (291). In someimplementations, the IAP is implemented to receive alphanumeric inputvia, for example, a process of the input interface 118, and therendering engine 120 renders text content based on the input. Further,the rendering engine 120 links the text content with the cursor elementfor the user, such that movement of the cursor element also coincideswith movement of the text content.

The user computing device 10, 12 also processes the input specified bythe user to detect triggers embedded within the content of the input(292). In some implementations, the IAP 100 includes logic to scan,parse or otherwise analyze the text content for triggers.

In an example, the trigger can correspond to a designated keyword thatis pre-associated with a content element or content-rendering action(293). Depending on implementation, one or multiple keywords may bedesignated as triggers.

As an addition or variation, the trigger can correspond to a commandentry (294). The command entry can include a command marker, which maybe in the form of a designated alphanumeric character or combinationsthereof (e.g., “/”), followed by a string of characters that representthe command. Thus, when a command marker is detected, the computingdevice 10, 12 can, for example, match the subsequent term againstcommands of a command library to determine whether the text contentspecifies a command. If a command is detected, user computing device 10,12 can automatically implement the command.

Accordingly, in examples, the user computing device 10, 12 alters theshared content of the collaborative session in response to detecting atrigger that is embedded in the text content modifying the user's cursorelement (297). In some examples, the IAP 100 is implemented such thatthe rendering engine 120 automatically generates dynamic content that ispre-associated with the detected trigger (298). For example, therendering engine can display a pre-associated icon or animation (e.g.,dynamic icon, GIF rendering, etc.) with a keyword, and once the keywordis detected, the pre-associated content element is rendered. By way ofillustration, if one of the participants of the collaboration sessionincludes the message “Happy Birthday to John”, the computing device 10,12 may display a cake with candles flickering in iconic form or a row ofballoons that move upward across the canvas 122. Accordingly, in someexamples, the content rendered in response to detecting such triggersmay be provided as (i) a separate layer from an underlying canvas 122and/or other elements of the shared content, (ii) as a separate graphicelement that is provided or integrated with the cursor element, (iii)separate or distinct from the text content and/or cursor element, or(iv) in a separate region that overlays the canvas 122, surroundingregion (e.g., part of framework). Further, the content may be dynamic inthat the rendered content may change appearance/position over time, suchas to reflect movement of change of state.

As an addition or variation, the IAP 100 can detect and automaticallyimplement a command entry to cause the shared content to be altered inaccordance with a corresponding command. For example, a user can enter acommand to invoke a programmatic element or interface. By way ofillustration, the user can enter input that is detected to be a commandentry that identifies a widget (e.g., “/voting”). In response, the IAP100 can invoke a widget that generates a corresponding interactivecontent element as part of the shared content (e.g., interactive elementto receive voting input from all participants). As another entry, theuser can enter input that is detected to be a command entry thatidentifies another type of programmatic element (e.g., plugin, interfaceto other program). In response, the IAP 100 can render an interface forusing the plugin as part of the shared content, or generate an outputthat is based on the detected command.

EXAMPLES

FIG. 3A through FIG. 3C illustrate examples and variations of sharedcontent for a collaborative environment, implemented using awhiteboarding application service, according one or more embodiments. Indescribing examples of FIG. 3A through FIG. 3C, reference is made toelements of FIG. 1A and FIG. 1B for purpose of illustrating a suitablecomponent or element implementing the features being described. Further,while some examples are described which reference the whiteboardapplication service in context of computing devices 10, 12 whichimplement an interactive application platform 100, functionalitydescribed with the whiteboard application service can alternatively beimplemented in a computing platform or environment without functionalityfor other application services. In particular, examples such asdescribed with FIG. 3A through FIG. 3C (as well as FIG. 2C and FIG. 2D)can be implemented using network service applications or web-enabledapplications for generating whiteboard content in a collaborativeenvironment.

With reference to FIG. 3A, a workspace file is shown to be rendered on adisplay 302 of a user computing device 10, in connection with the usercomputing device utilizing a whiteboard application service to createand edit a whiteboard design 314. On an individual computing device 10,the IAP 100 can be implemented to create a canvas 322 which the user caninteract with to view and edit a whiteboard design. In examples, the IAP100 can render the canvas 322, as well as provide an applicationframework and input interface where the user can select and manipulateinput tools to create design elements. In some examples, the designelements are specific to the whiteboard application. For example, theIAP 100 can be implemented to enable the user to select tools such assticky notes, stamps, emoticons, shapes, images and text. The IAP 100can further be implemented to provide menus and other features whichenable the user to select attributes and characteristics for the designelements (e.g., color, line thickness, shape, text content, etc.). Somedesign elements may further be dynamic (e.g., dynamic emoticons). TheIAP 100 can further configure some design tools specifically for aparticular user. For example, as described in greater detail, the IAP100 may provide an input tool that automatically includes an identifierfor the user (e.g., letter initials, face picture) as an input featurewhich the user can select from.

In an example of FIG. 3A, the IAP 100 provides the whiteboardapplication service with an emoticon wheel 310. The emoticon wheel canbe a feature that the user can toggle between an active (e.g., viewable)and inactive state. When the emoticon wheel is an active state, theemoticon wheel provides multiple input features to enable the user toselect a particular emoticon or graphic. The IAP 100 can be furtherconfigured to enable selection of input features to be dynamic (e.g.,moving emoticons on display 302).

FIG. 3B illustrates another example of a shared whiteboard content 314that can be rendered and updated on the display 302 of user computingdevices 10 that participate in a collaborative session. The whiteboardcontent 314 can be generated and rendered to participant computingdevices that each implement the IAP 100. In the example provided, thewhiteboard content 314 is provided text blocks, such as may be providedby a “sticky note” format and structure. Collaborators can contribute tothe content of the whiteboard content 314 by creating and/or editingcontent elements (e.g., additional sticky notes), as well as byinteracting with input features to create dynamic features (e.g.,emoticons that move on the display 302). In an example of FIG. 3B, theuser can also interact with a stamp wheel 320, to select pre-determinedcontent elements (“stamps”) that can be placed on the canvas 322. Anycollaborator of whiteboard content 314 can select a stamp tocommunicate, for example, approval or disapproval of a particularmessage. In a collaborative environment, for example, differentproposals may be posted onto the whiteboard content 314, andcollaborators can vote on each proposal by indicating an approval ordisapproval stamp.

Further, stamp wheel 320 illustrates an example of an input feature thatcan be automatically personalized for the user. For example, stamp wheel320 can be configured to include a user-specific stamp 321 that can beselected to cause the whiteboard design 314 to render a design elementthat that is specific to the user (e.g., display the user's initial, theuser's picture, or a favorite image selected by the user).

With further reference to an example of FIG. 3B, the whiteboardapplication service can also be used to create dynamic content in theform of text that is provided with an active collaborator's pointergraphic (“cursor text”). For example, each collaborator can interactwith the whiteboard content 314 by moving a pointer 325 over an area ofthe canvas 322. The collaborator can interact with the whiteboardapplication service to specify text content that links with the pointer325, resulting in cursor text 327. The cursor text 327 can be dynamic inthat the text content may move over the canvas 322 with the user'spointer 325. Further, in some examples, the cursor 327 may be ephemeral,so as to last, a few seconds (e.g., 5-10 seconds). Further, invariations, the user can stamp text content 327 onto the canvas 322 sothat the text content forms part of the whiteboard content 314.

FIG. 3C illustrates another example of a shared whiteboard content 334that includes cursor text content, according to one or more embodiments.As with other examples, the shared whiteboard content 334 can begenerated and rendered to participant computing devices using awhiteboard service application. The IAP 100 is implemented to display acursor element 345 on the canvas 342 for individual participants who,for example, interact with their respective pointer device. Further asdescribed with other examples (see e.g., FIG. 2C and FIG. 2D), theparticipants can specify input (e.g., via a keyboard) to alter thecursor elements 345 to include cursor text 347, where the text contentcan include, for example, a message that a corresponding user wishes tocommunicate to the other participants.

In an example shown by FIG. 3C, some of the participants are shown toprovide text input to configure their respective cursor elements 345(which reflect the interaction of their respective pointer devicerelative to the canvas 342) to include cursor text 347. Otherparticipants who have not specified such type of input can berepresented by cursor elements 345 without accompanying text content.Each cursor text 347 can include a boundary 349 and further becharacterized by a select set of attributes (e.g., fill color, linethickness, text color, text font, size etc.). The boundary 349 can bedynamic, in that it may size to accommodate a length of the textcontent. For example, the boundary 349 can expand in either of ahorizontal direction or vertical direction (e.g., to display multiplelines of text content). Further, as described with some examples, thetext content may be ephemeral so as to automatically disappear after agiven duration of time.

In the example shown, the cursor chat of a first user includes a keywordtrigger 359 (“love”). In response to the detected keyword trigger, theshared content 334 is altered to include dynamic content elements 351that are pre-associated with the particular keyword. The dynamic contentelements 351 may be rendered, for example, as a separate layer, apartfrom the bounding region of the cursor text 347.

Additionally, in the example shown, the cursor text of a second userincludes a command entry 355 (“/attendance”). The command entryimplements a commands on the respective user's computing device, wherethe output of the command causes the shared content to be altered.Numerous types of commands may be utilized. By way of illustration, thecommand entry 355 triggers a widget to generate an interactive output360 on the canvas 342. In an example shown, the widget is a programexecutable that automatically executes upon the command entry beingentered. In the illustrative example, the widget executes to identifythe name of each participant and lists the name in a bounding box on thecanvas 342.

FIG. 4A and FIG. 4B illustrates an example of user computing deviceutilizing multiple application services to create and/or update sharedcontent 434 in a collaborative environment, according to one or moreembodiments. In an example shown, user computing device 410 (which isrepresentative of other computing devices of the collaborativeenvironment) accesses a network site to implement the IAP 100 and renderinterfaces for selected application services. As described with otherexamples, the IAP 100 can operate in alternative modes to utilizecorresponding application services provided by network computer system150 through the network site. Further, the IAP 100 can switch modeswhile the shared content 434 is continuously rendered on the computingdevice 410. For example, the IAP 100 can switch modes during acollaborative session while the user's computing device is accessing aworkspace file that is the source of the shared content. Further,individual users can switch modes, so as to view and/or update theshared content 434 using a different application service than otherusers of the collaborative session. Moreover, as described with FIG. 4Aand FIG. 4B, users can toggle back and forth between differentapplication services while viewing or updating the shared content.

In an embodiment, the IAP 100 can enable the individual users to utilizeeach of a design interface application service and a whiteboardingapplication service. With reference to the illustrative example of FIG.4A, the IAP 100 generates a canvas 422 for use with the design interfaceapplication services. When the design interface application service isused, the IAP 100 provides an input interface 420 and applicationframework of the design interface application.

With reference to the illustrative example of FIG. 4B, the IAP 100 istoggled to the whiteboarding application service. When the whiteboardingapplication service is used, the IAP 100 provides an input interface 430and application framework that is specific to the whiteboardingapplication service. As shown, the input interfaces 420, 430 of therespective design interface and whiteboarding application services maydiffer in appearance, layout and functionality. For example, differenttypes of input features may be provided with each input interface 420,430. Accordingly, content elements which may be created by oneapplication service may not be available for use by the otherapplication service. Furthermore, the behavior (e.g., dynamic behaviorversus static behavior) and default settings (e.g., color, linethickness) of design elements provided through the respective inputinterfaces 420, 430 may also be different. The functional behavior thatmay be enabled with design elements (e.g., resize behavior of designelements, autolayout behavior of design elements, use of constraints,etc.) can also vary based on the design application service that is inuse by the user computing device 410.

As shown with FIG. 4A and FIG. 4B, the IAP 100 can be toggled on a givencomputing device 410 as between modes, where each mode coincides with acorresponding application service. Further, the IAP 100 can be toggledon the computing device 410 while shared content 434 is being rendered,coinciding with, for example, corresponding workspace file being openand in use by the IAP 100. Thus, for example, the IAP 100 may operate in(i) a first mode to enable use of the first application service (e.g.,design application) and (ii) a second mode to enable use of the secondapplication service (e.g., whiteboard application service). Inimplementing each mode, the IAP 100 can configure input features andbehaviors of input actions/design elements for the respective designapplication service. Thus, the configuration and implementation of theinput interface 118, application framework, rendering engine 120 and/orother components of IAP 100 can vary based on the selected applicationservice and respective mode of operation of the IAP 100.

In some examples, the user can toggle the operational modes of the IAP100 to switch the application service that is used to update the sharedcontent that is rendered on the canvas 422. Thus, for example, the usercan utilize the whiteboard application service to render a design oncanvas 422, then toggle the operational mode of the IAP 100 to use theinteractive design application service to update the same design on thecanvas 422. Likewise, the user can utilize the design interfaceapplication service to render a design interface, then toggle theoperational mode of the IAP 100 to use the whiteboard applicationservice to update the design interface. In at least some examples, theIAP 100 and network computer 150 can update the respective workspacefile without closing the workspace file. Furthermore, in a collaborationscenario, the update to the workspace file can be programmaticallypropagated to the instance of the workspace file on the user computingdevices of the other collaborators.

Network Computer System

FIG. 5 illustrates a computer system on which one or more embodimentscan be implemented. A computer system 500 can be implemented on, forexample, a server or combination of servers. For example, the computersystem 500 may be implemented as the network computing system 150 ofFIG. 1A and FIG. 1B.

In one implementation, the computer system 500 includes processingresources 510, memory resources 520 (e.g., read-only memory (ROM) orrandom-access memory (RAM)), one or more instruction memory resources540, and a communication interface 550. The computer system 500 includesat least one processor 510 for processing information stored with thememory resources 520, such as provided by a random-access memory (RAM)or other dynamic storage device, for storing information andinstructions which are executable by the processor 510. The memoryresources 520 may also be used to store temporary variables or otherintermediate information during execution of instructions to be executedby the processor 510.

The communication interface 550 enables the computer system 500 tocommunicate with one or more user computing devices, over one or morenetworks (e.g., cellular network) through use of the network link 580(wireless or a wire). Using the network link 580, the computer system500 can communicate with one or more computing devices, specializeddevices and modules, and/or one or more servers.

In examples, the processor 510 may execute service instructions 522,stored with the memory resources 520, in order to enable the networkcomputing system to implement the network service 152 and operate as thenetwork computing system 150 in examples such as described with FIG. 1Aand FIG. 1B.

The computer system 500 may also include additional memory resources(“instruction memory 540”) for storing executable instruction sets (“IAPinstructions 545”) which are embedded with web-pages and other webresources, to enable user computing devices to implement functionalitysuch as described with the IAP 100. In examples, the computer system 500can communicate the IAP instructions 545 to computing devices ofcollaborators during a collaboration session.

As such, examples described herein are related to the use of thecomputer system 500 for implementing the techniques described herein.According to an aspect, techniques are performed by the computer system500 in response to the processor 510 executing one or more sequences ofone or more instructions contained in the memory 520. Such instructionsmay be read into the memory 520 from another machine-readable medium.Execution of the sequences of instructions contained in the memory 520causes the processor 510 to perform the process steps described herein.In alternative implementations, hard-wired circuitry may be used inplace of or in combination with software instructions to implementexamples described herein. Thus, the examples described are not limitedto any specific combination of hardware circuitry and software.

User Computing Device

FIG. 6 illustrates a user computing device for use with one or moreexamples, as described. In examples, a user computing device 600 cancorrespond to, for example, a work station, a desktop computer, a laptopor other computer system having graphics processing capabilities thatare suitable for enabling renderings of design interfaces and graphicdesign work. In variations, the user computing device 600 can correspondto a mobile computing device, such as a smartphone, tablet computer,laptop computer, VR or AR headset device, and the like.

In examples, the computing device 600 includes a central or mainprocessor 610, a graphics processing unit 612, memory resources 620, andone or more communication ports 630. The computing device 600 can usethe main processor 610 and the memory resources 620 to store and launcha browser 625 or other web-based application. A user can operate thebrowser 625 to access a network site of the network service 152, usingthe communication port 630, where one or more web pages or otherresources 605 for the network service 152 (see FIG. 1A and FIG. 1B) canbe downloaded. The web resources 605 can be stored in the active memory624 (cache).

As described by various examples, the processor 610 can detect andexecute scripts and other logic which are embedded in the web resourcein order to implement the IAP 100 (see e.g., FIG. 1A and FIG. 1B). Insome of the examples, some of the scripts 615 which are embedded withthe web resources 605 can include GPU accelerated logic that is executeddirectly by the GPU 612. The main processor 610 and the GPU can combineto render a workspace file, or design under edit (“DUE 611”) on adisplay component 640. The rendered design interface can include webcontent from the browser 625, as well as design interface content andfunctional elements generated by scripts and other logic embedded withthe web resource 605. By including scripts 615 that are directlyexecutable on the GPU 612, the logic embedded with the web resource 615can better execute the IAP 100, as described with various examples.

CONCLUSION

Although examples are described in detail herein with reference to theaccompanying drawings, it is to be understood that the concepts are notlimited to those precise examples. Accordingly, it is intended that thescope of the concepts be defined by the following claims and theirequivalents. Furthermore, it is contemplated that a particular featuredescribed either individually or as part of an example can be combinedwith other individually described features, or parts of other examples,even if the other features and examples make no mentioned of theparticular feature. Thus, the absence of describing combinations shouldnot preclude having rights to such combinations.

What is claimed is:
 1. A network computer system comprising: a memorysub-system to store a set of instructions; one or more processors thatoperate to communicate the set of instructions to a plurality of userdevices, wherein the set of instructions include instructions that whenexecuted by each user device of the plurality of user devices, causesthe user device to: enable the user to utilize any one of multipledesign application services to create and update a workspace file; andstore the updated workspace file in connection with an accountassociated with a user of the first user computing device.
 2. Thenetwork computer system of claim 1, wherein the instructions enable theuser to utilize anyone of the multiple design application services tocreate and update the workspace file while the workspace file is open onthe user computing device.
 3. The network computer system of claim 2,wherein the instructions load an interactive graphic applicationplatform into a web-enabled component of the first user computingdevice.
 4. The network computer system of claim 2, wherein theinstructions enable the user of the first user computing device totoggle between using a first design application service and a seconddesign application service to update the workspace file while theworkspace file is in the open state.
 5. The network computer system ofclaim 2, wherein the instructions enables the interactive graphicapplication platform to be operated in multiple modes, including a firstmode to utilize the first design application service and in a secondmode to utilize the second design application service.
 6. The networkcomputer system of claim 1, wherein the instructions provide a commondesign library to the first user computing device for use with the firstdesign application service and the second design application service. 7.The network computer system of claim 1, further comprising instructions,that execute by the one or more processors, to cause the networkcomputer system to: identify one or more computing devices of users thatare collaborating on the workspace file during a collaborative session;detect a set of changes to the workspace file made by the user on thefirst user computing device; and propagate the set of changes to aninstance of the workspace file provided to each of the one or morecomputing devices of the collaborating users.
 8. A method for providinga graphic application design platform, the method being implemented byone or more processors and comprising: providing instructions to a firstuser computing device, the instructions enabling the first usercomputing device to utilize multiple design application services tocreate and update a workspace file; and storing the updated workspacefile in connection with an account associated with a user of the firstuser computing device.
 9. The method of claim 8, wherein providing theinstructions includes enabling the first user computing device toutilize multiple design application services to create and update theworkspace file while the workspace file is in an open state.
 10. Themethod of claim 8, wherein providing the instructions includes loadingan interactive graphic application platform into a web-enabled componentof the first user computing device.
 11. The method of claim 10, whereinproviding the instructions include enabling the user of the first usercomputing device to toggle between using a first design applicationservice and a second design application service to update the workspacefile while the workspace file is in the open state.
 12. The method ofclaim 11, wherein providing the instructions includes enabling theinteractive graphic application platform to be operated in multiplemodes, including a first mode to utilize the first design applicationservice and in a second mode to utilize the second design applicationservice.
 13. The method of claim 8, further comprising: providing acommon design library to the first user computing device for use withthe first design application service and the second design applicationservice.
 14. The method of claim 8, further comprising: identifying oneor more computing devices of users that are collaborating on theworkspace file during an online session; detecting a set of changes tothe workspace file made by the user on the first user computing device;and propagating the set of changes to an instance of the workspace fileprovided to each of the one or more computing devices of thecollaborating users.
 15. A non-transitory computer-readable medium thatstores instructions, including instructions that, when executed by oneor more processors of a computing device, cause the computing device toperform operations to: providing instructions to a first user computingdevice, the instructions enabling the first user computing device toutilize multiple design application services to create and update aworkspace file; and storing the updated workspace file in connectionwith an account associated with a user of the first user computingdevice.